package model;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.util.Collection;
import java.util.LinkedList;

public class Uzytkownik extends Model {
	private String login;

	public String getLogin() {
		return login;
	}

	public Uzytkownik(String _login) {
		login = _login;
	}

	public void setUprawnienia(String u) throws SQLException {
		PreparedStatement p = getConnection().prepareStatement(
		"update Uzytkownik set uprawnienia = ? where login = ?");
		p.setString(1, u);
		p.setString(2, login);
		p.executeUpdate();
		p.close();
	}

	public String getUprawnienia() throws SQLException {
		PreparedStatement p = getConnection().prepareStatement(
		"select uprawnienia from Uzytkownik where login = ?");
		p.setString(1, login);
		ResultSet r = p.executeQuery();
		String u = r.next()?r.getString(1):null; 
		r.close();
		p.close();		
		return u;
	}
	
	public void delete() throws SQLException{
		PreparedStatement p = getConnection().prepareStatement(
				"delete from Uzytkownik where login = ?");
		p.setString(1,login);
		p.executeUpdate();
		p.close();	
	}
	
	public Uzytkownik(String _login, String haslo) throws SQLException {
		PreparedStatement p = getConnection().prepareStatement(
				"insert into Uzytkownik(login, haslo) values(?, ?)");
		p.setString(1, _login);
		p.setString(2, haslo);
		p.executeUpdate();
		login = _login;
		p.close();
	}

	static Collection<Uzytkownik> getLista()throws SQLException {
		PreparedStatement p = getConnection()
		.prepareStatement(
				"select	login		" +
				"from	Uzytkownik 	");
		ResultSet r = p.executeQuery();
		LinkedList<Uzytkownik> out =  new LinkedList<Uzytkownik>();
		while(r.next()){ // kolejność: imie,autorId,film_id,rolaId,rola,tytulFilmu,nazwisko,id
			out.add( new Uzytkownik(r.getString(1)) );
		}
		r.close();
		p.close();
		return out;
	}
	
	public boolean zweryfikuj(String haslo) throws SQLException {
		PreparedStatement p = getConnection()
				.prepareStatement(
						"select count(login) from Uzytkownik where login = ? and haslo = ?");
		p.setString(1, login);
		p.setString(2, haslo);
		ResultSet r = p.executeQuery();
		boolean b = r != null && r.next() && r.getInt(1) == 1;
		r.close();
		p.close();
		return b;
	}
}
